package br.gov.mi.corporativo.dominio.boundary.comum.pessoafisica;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.comum.PessoaFisica;


@Path("pessoafisica")
public class PessoaFisicaRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private PessoaFisicaEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<PessoaFisica> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("id/{idPessoaFisica}")
	@Produces({MediaType.APPLICATION_JSON})
	public PessoaFisica recuperarPorIdPessoaFisica(@PathParam("idPessoaFisica")Long idPessoaFisica){
		return service.recuperarPorIdPessoaFisica(idPessoaFisica);
	}
	
	@GET
	@Path("uf/{uf}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorUf(@PathParam("uf")Long uf){
		return service.recuperarPorUf(uf);
	}
	
	@GET
	@Path("pais/{pais}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorPais(@PathParam("pais")Long pais){
		return service.recuperarPorPais(pais);
	}
	

	@GET
	@Path("tratamento/{tratamento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorTratamento(@PathParam("tratamento")Long tratamento){
		return service.recuperarPorTratamento(tratamento);
	}
	
	@GET
	@Path("pessoa/{pessoa}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorPessoa(@PathParam("pessoa")Long pessoa){
		return service.recuperarPorPessoa(pessoa);
	}
	
	@GET
	@Path("profissao/{profissao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorProfissao(@PathParam("profissao")Long profissao){
		return service.recuperarPorProfissao(profissao);
	}
	
	@GET
	@Path("municipio/{municipio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorMunicipio(@PathParam("municipio")Long municipio){
		return service.recuperarPorMunicipio(municipio);
	}
	
	@GET
	@Path("nmpessoafisica/{nmPessoaFisica}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorNmPessoaFisica(@PathParam("nmPessoaFisica")String nmPessoaFisica){
		return service.recuperarPorNmPessoaFisica(nmPessoaFisica);
	}
	
	@GET
	@Path("dtnascimento/{dtNascimento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorDtNascimento(@PathParam("dtNascimento")Date dtNascimento){
		return service.recuperarPorDtNascimento(dtNascimento);
	}
	
	@GET
	@Path("sexo/{stSexo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorStSexo(@PathParam("stSexo")String stSexo){
		return service.recuperarPorStSexo(stSexo);
	}
	
	@GET
	@Path("gruposanguineo/{csGrupoSanguineo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorCsGrupoSanguineo(@PathParam("csGrupoSanguineo")String csGrupoSanguineo){
		return service.recuperarPorCsGrupoSanguineo(csGrupoSanguineo);
	}
	
	@GET
	@Path("fatorrh/{csFatorRh}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorCsFatorRh(@PathParam("csFatorRh")String csFatorRh){
		return service.recuperarPorCsFatorRh(csFatorRh);
	}
	
	@GET
	@Path("cor/{csCor}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorCsCor(@PathParam("csCor")String csCor){
		return service.recuperarPorCsCor(csCor);
	}
	
	@GET
	@Path("estadocivil/{csEstadoCivil}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorCsEstadoCivil(@PathParam("csEstadoCivil")String csEstadoCivil){
		return service.recuperarPorCsEstadoCivil(csEstadoCivil);
	}
	
	@GET
	@Path("pai/{nmPai}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorNmPai(@PathParam("nmPai")String nmPai){
		return service.recuperarPorNmPai(nmPai);
	}
	
	@GET
	@Path("mae/{nmMae}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaFisica> recuperarPorNmMae(@PathParam("nmMae")String nmMae){
		return service.recuperarPorNmMae(nmMae);
	}
	


}
